SPSS – 通过语法重新排列变量

作者:Ruben Geert van den Berg,发表于 SPSS Blog

在 SPSS 中工作时,重新排列变量是很常见的操作。本教程将展示如何正确地进行此操作。我们鼓励您通过下载并打开 hotel_evaluation.sav 来亲自尝试这些示例,该数据集的截图如下所示。

SPSS Reorder Variables by Syntax Data View

SPSS 重新排列变量示例 1

在 SPSS 中重新排列变量最常见的方法是运行 ADD FILES 命令。在解释其工作原理之前,我们首先要展示它确实有效。假设我们想要交换变量 fnamesex。运行以下 syntax(语法) 即可实现:

***Reorder variables example 1.
**
add files file *
/keep id sex fname all.

execute.

结果

SPSS Reorder Variables by Syntax Data View

工作原理?

请记住,ADD FILES 合并了包含不同个案但变量相似的数据源。请注意,在 SPSS 语法中,星号 * 指的是活动数据集(通常是 SPSS 中打开的唯一数据)。

现在,如果我们将此指定为唯一的数据源,则它不会与任何内容合并。这意味着运行 add files file *. 实际上什么都不做。但是,如果我们添加一个 /keep 子命令,告诉 SPSS 保留(而不是删除)哪些变量 以及以什么顺序 保留,则此命令变得有用。

在我们的第一个示例中,我们决定保留 id sex fname。请注意,原始顺序是 id fname sex

最后,all 是一个特殊的关键词,指的是所有其他变量,并保持它们原有的顺序。省略 all 会从我们的数据中删除这些变量。所有这些操作的最终结果是,我们基本上什么都不做,只是以与之前不同的顺序保留所有变量,这正是我们想要的。

SPSS 重新排列变量示例 2

现在,我们只是在数据中交换了两个变量。但是,如果要移动整个变量块呢?例如,假设我们想要将变量 q1q5 放在数据中的 fname 之后。如果我们使用 SPSS 的 TO 关键词,这根本不是问题。以下语法展示了如何轻松完成此操作。

***Move entire block of variables forwards within file.
**
add files file */keep id to fname q1 to q5 all.
execute.

结果

SPSS Reorder Variables by Syntax Data View

SPSS 重新排列变量示例 3

回顾一下:如果我们在 SPSS 中打开了一些数据,我们可以通过使用带有 keep 子命令的 ADD FILES 命令轻松地重新排列变量。

这是完成此操作的唯一方法吗?不。如果我们完成了数据集的处理,我们可以在 save 命令中使用完全相同的 keep 子命令,如下面的第一个示例所示。这实际上没有必要,但它可以节省少量的语法和处理时间。

为了完整起见,如果我们提前知道数据中存在哪些变量,我们也可以在使用 get 命令打开数据文件时重新排列它们。

SPSS 重新排列变量语法示例

***1. Reorder variables when saving data file.
**
save outfile '10_all_data_prepared.sav'
/keep q1 to q5 all.


***2. Reorder variables when opening data file.
**
get file 'hotel_evaluation.sav'
/keep q1 to q5 all.

SPSS SORT VARIABLES

我们还需要提到一件事:SPSS(从 16 版开始)还具有 SORT VARIABLES 命令。这样,您可以根据变量名称、variable type(变量类型)variable label(变量标签)format(格式) 或其他几个属性对变量进行排序。

我们显然需要在这里提到此命令。但是,我们在实践中很少使用它。原因是上述排序选项几乎从不对应于我们想要的变量顺序。无论如何,那些想快速尝试一下的人可以运行类似 sort variables by name. 的命令。

SPSS 重新排列变量 - 最终说明

在某些情况下,您可能需要以比本教程涵盖的更复杂的结构化方式对变量进行排序。一个例子是根据变量名称中的下标对(许多)变量进行排序。有效完成此类案例的方法是在 SPSS 中使用 Python